CC = gcc
SRCS = $(wildcard *.c)
OBJS = $(SRCS:.c=.o)
DEPS = $(SRCS:.c=.d)
TARGET = hello

# 链接目标
$(TARGET): $(OBJS)
	$(CC) -o $@ $^

# 编译规则 + 自动依赖生成
%.o: %.c
	$(CC) -MMD -c $< -o $@

# 清理
clean:
	rm -f *.o *.d $(TARGET)

# 引入自动生成的依赖文件，- 表示忽略不存在的
-include $(DEPS)